import { format } from '@/utils/dt'

export function take_array(arr, level = 0, results = []) {
  return arr.reduce((p, item) => {
    if (item.children) {
      results.push('|' + new Array(level).fill('&emsp;').join('') + ' ' + item.prop + '|' + item.label + '|' + item.type + '|' + (item.required ? '是' : '否') + '|')
      p.concat(take_array(item.children, level + 1, results))
    } else {
      p.push('|' + new Array(level).fill('&emsp;').join('') + ' ' + item.prop + '|' + item.label + '|' + item.type + '|' + (item.required ? '是' : '否') + '|')
    }
    return p
  }, results)
}

export default function markdown(doc_title, message_type, params, params_data, results, results_data, logs = []) {
  const params_arr = (params_data && params_data[0]) ? take_array(params_data[0].children) : []
  const results_arr = (results_data && results_data[0]) ? take_array(results_data[0].children) : []
  return `# ${doc_title}

## 日志

|日期|用户|说明
|:--|:--|:--|
${logs.map((i) => {
    return `|${format(i.edit_time, 'YYYY-MM-DD HH:mm:ss')}|${i.editor}|${i.message}`
  }).join('\n')}

## message-type

${message_type}

## 参数示例

\`\`\`json
${params}
\`\`\`

## 参数说明

|属性值|属性说明|参数类型|是否必传
|:--|:--|--|--|
${params_arr.join('\n')}

## 返回值示例

\`\`\`json
${results}
\`\`\`

## 返回值说明

|属性值|属性说明|参数类型|是否必传
|:--|:--|--|--|
${results_arr.join('\n')}
`
}
